<?php

App::uses('AppController', 'Controller');

class CategoriesController extends AppController {

	var $name = 'Categories';
	var $uses = array('Category');



	/**
	 * Danh Sach menu con
	 *
	 * @param type  meta
	 * @return type  meta
	 * @access public
	 */
	function lists($parent_id) {
		$this->set('items', $this->Category->getAll( (int)$parent_id));
		$this->set('cate_id', $parent_id);
		$this->set('category', $this->Category->read(array('id','name', 'als', 'desc'), (int)$parent_id));
		$this->set('images', $this->Image->getAll( 'Category' . $parent_id));
		$this->set('als', 'Category');
	}
	/**
	 * Danh sanh list by parent
	 *
	 * @param type  meta
	 * @return type  meta
	 * @access public
	 */
	function getListByParent($parent_id) {
		$this->_responseJson(array('cates' => $this->Category->getAll($parent_id)));
	}
       
	/**
	 * Danh sach danh muc
	 *
	 * @param type  meta
	 * @return type  meta
	 * @access public
	 */
	function admin_index() {
		App::uses('Codetbl', 'Model');
		$Codetbl = new Codetbl();
		$items = $this->Category->getAll(null, null, array(4,5));
		foreach($items as $k => $v) {
			$v['Category']['childs'] = $this->Category->getAll($v['Category']['id'], null, array(4,5));
			$items[$k] = $v;
		}
		$this->set('delete', true);
		$this->set('items', $items);
		$this->set('status', $Codetbl->getList('COM', 'STS'));

		// thong tin hien thi cho trang
		$this->set('main_page_title', __('Danh Mục'));
        $this->set('main_page_description', __('Quản lý thông tin các danh mục'));

		$breadcrumb = array(
			array(
				'name' => __( 'Danh Mục' ),
				'url' => ''
			)
		);
		$this->set( 'breadcrumb', $breadcrumb );
	}
	
	/**
	 * Add
	 * 
	 * @param
	 *        	type meta
	 * @return type meta
	 * @access public
	 */
	function admin_add($id = null) {
		if( ! empty( $this->request->data ) ) {
			
			$data = &$this->request->data[$this->als];
			
			// Get thong tin category cha
			if( ! empty( $data['parent_id'] ) ) {
				$data['parent_id'] = (int)$data['parent_id'];
				
				$parent_cate = $this->Category->read( array(
					'type',
					'is_desc'
				), $data['parent_id'] );
				$data['is_desc'] = $parent_cate[$this->als]['is_desc'];
				
				if( ! $data['fix'] ) {
					$data['type'] = $parent_cate[$this->als]['type'];
				}
			}
			
			// kiem tra edit
			if( !empty( $data['id'] ) ) {
				$data['id'] = (int)$data['id'];
			} else {
				unset( $data['id'] );
				$data['status'] = 4;
				$data['fix'] = 0;
				$this->Category->create();
			}
			
// 	pr( $data );
// 	exit();
			
			if( $this->Category->save( $data ) ) {
				$this->Session->setFlash( 'Lưu danh mục thành công.', 'success' );
				if( empty($data['id']) ) {
						unset($data['name']);
						unset($data['als']);
						unset($data['sort']);
						unset($data['desc']);
					} else {
						$this->redirect('/admin' );
					}
				} else {
					$this->Session->setFlash('Lưu danh mục thất bại. Vui lòng xem lại thông tin bên dưới', 'error');
				}
			
		}

		// Truong hop show edit
		if( !empty( $id )) {
			$info = $this->Category->read(null, (int)$id);
			if(!empty($info)) {
				$this->request->data = $info;
			}
		}
		
		// Get danh mục cha
		$category_lists = $this->Category->find('list', array(
			'fields' => array('id', 'name'), 
			'conditions' => array('status' => 4, 'parent_id' => 0, 'fix <>' => 2))
		);
		
		$this->set('category_lists', $category_lists);

		// thong tin hien thi cho trang
		$this->set('main_page_title', __('Danh Mục'));
        $this->set('main_page_description', __('Quản lý thông tin các danh mục'));

        $breadcrumb = array(
			array('name' => 'Danh Mục', 'url' => 'categories'),
			array('name' => !empty( $id ) ? 'Sửa' : 'Thêm mới')
		);
		$this->set('breadcrumb', $breadcrumb);
	}

	/**
	 * Xem chi tiet
	 *
	 * @param type  meta
	 * @return type  meta
	 * @access public
	 */
	function admin_info($id = null) {
		if(!empty($id)) {
			$info = $this->Category->read(null, (int)$id);
			$info[$this->als]['parent_name'] = '';
			if($info[$this->als]['parent_id'] != 0) {
				$parent = $this->Category->read(array('name'), (int)$info[$this->als]['parent_id']);
				$info[$this->als]['parent_name'] = $parent[$this->als]['name'];
			}

			App::uses('Codetbl', 'Model');
			$Codetbl = new Codetbl();
			$this->set('status', $Codetbl->getList('COM', 'STS'));

			$this->set('info', $info);
			$this->set('childs', $this->Category->getAll((int)$id));
		} else {
			$this->Session->setFlash('Không tìm thấy danh mục.', 'error');
			$this->redirect(array('action' => 'admin_index'));
		}

		// thong tin hien thi cho trang
		$this->set('main_page_title', __('Danh Mục'));
        $this->set('main_page_description', __('Quản lý thông tin các danh mục'));

        $breadcrumb = array(
			array('name' => 'Danh Mục', 'url' => 'categories'),
			array('name' => 'Xem thông tin')
		);
		$this->set('breadcrumb', $breadcrumb);
	}

	/**
	 * delete san pham
	 *
	 * @param type  meta
	 * @return type  meta
	 * @access public
	 */
	function _delete($id = null){ // todo

		if(!empty($id)) {
			$als = &$this->als;
			$id = (int)$id;
			$category = $this->Category->read((int)$id);
			if( $this->Category->delete($id)) {
					
				switch ($category[$als]['type']) {
					case 'video':
// 						$this->loadModel('');
// 						$childs = $this->Category->getAll($id, 'asc', array(4,5));
						break;	
				}
				
				$this->Session->setFlash('Xóa danh mục thành công.', 'success');
			} else {
				$this->Session->setFlash('Xóa danh mục thất bại. Vui lòng thử lại sao', 'error');
			}
		} else {
			$this->Session->setFlash('Không tìm thấy danh mục. Vui lòng thử lại sao', 'error');
		}
		$this->redirect('/admin');
	}

	/**
	 * Change status
	 *
	 * @param type  meta
	 * @return type  meta
	 * @access public
	 */
	function admin_changStatus(){
		if(!empty($this->request->data)) {
			$data = &$this->request->data[$this->als];
			if(!empty($data['id']) && !empty($data['status'])) {
				if($data['status'] == 9) {
					$this->_delete($data['id']);
				} else {
					$this->Category->id = (int)$data['id'];
					if( $this->Category->saveField('status', (int)$data['status']) ){
						$this->Session->setFlash('Thay đổi trạng thái danh mục thành công', 'success');
					} else {
						$this->Session->setFlash('Thay đổi trạng thái danh mục thất bại', 'error');
					}
				}
			} else {
				$this->Session->setFlash('Dự liệu không hợp lệ', 'error');
			}
		} else {
			$this->Session->setFlash('Dự liệu không hợp lệ', 'error');
		}

		$this->redirect(array('action' => 'admin_index'));
	}


}
